package com.example.cardgame.model1

import java.io.Serializable

// 定义 Card 类，表示一张卡片，实现 Serializable 接口以支持序列化
class Card(
    private var suit: String, // 卡片的花色
    private var rank: String, // 卡片的点数
    var isChosen: Boolean = false, // 卡片是否被选中，默认为 false
    var isMatched: Boolean = false // 卡片是否匹配，默认为 false
) : Serializable {
    // 伴生对象，包含静态成员
    companion object {
        // 定义卡片点数的字符串数组
        val rankStrings = arrayOf("A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K")
        // 定义卡片花色的字符串数组
        val validSuits = arrayOf("♥", "♦", "♠", "♣")
    }

    // 重写 toString 方法，返回卡片的花色和点数
    override fun toString(): String {
        return suit + rank
    }

    // 获取卡片的显示值，返回花色和点数的组合
    fun getDisplayValue(): String {
        return "$suit$rank"
    }

    // 匹配另一张卡片，返回匹配得分
    fun match(otherCard: Card): Int {
        return when {
            // 如果花色和点数都匹配，得分为 5
            otherCard.rank == rank && otherCard.suit == suit -> 5
            // 如果点数匹配，得分为 4
            otherCard.rank == rank -> 4
            // 如果花色匹配，得分为 3
            otherCard.suit == suit -> 3
            // 否则，得分为 0
            else -> 0
        }
    }
}